Typically, software development is date driven or date related. Reporting tools, event scheduling applications, etc., all do something based on a date or date range. For example, if you wanted a reporting tool to generate a report automatically on the 2nd MONDAY following the end of each payroll period, a user or programmer typically manually specifies each of those dates far into the future.
Some date driven programs only accept a constant date value for a date input, such as 12/23/2002. The date 12/23/2002 only occurs once in history and always represents December twenty-third two thousand and two. The value represented by that constant date in date input doesn't change based upon other factors. Thus, these programs are very limited in the types of actions they may perform without the addition of a lot of manual programming each time the fixed date value needs to be altered.
Typically, date driven programs lack the intelligence to alter the value represented by a date due to the existence of condition. For example, some scheduling programs allow a user to program a reoccurring date. Typically, some of the scheduling programs allow an action, such as generating paychecks, to be connected to that reoccurring date. However, in general, if one of the reoccurring dates occurs on a date that also happens to be a holiday, then these scheduling programs lack the intelligence to automatically alter the value represented by that occurrence of the reoccurring date due to the existence of the holiday condition.